<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilpuf: xilpuf_example.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilpuf
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xilpuf__example_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">xilpuf_example.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains macros which needs to configured by user for xilpuf_example.cand based on the options selected by user operations will be performed.</p>
<p>This example is supported for Versal and Versal Net devices.</p>
<pre>
 MODIFICATION HISTORY:</pre><pre> Ver   Who     Date     Changes
 ----- ------  -------- ------------------------------------------------------
 1.0   har     01/31/20 First release
 1.1   har     01/31/20 Updated file version to 1.1 to sync with library version
 1.2   am      08/14/20 Changed unsigned to signed enum object.
 1.3   har     05/20/21 Added option to program Black IV
 2.1   skg     12/14/22 Added enum for slr indexs
 2.5   hj      02/17/25 Added IV and red key macros for SSITs.</pre><pre> </pre><h2>User configurable parameters for PUF </h2>
<p>#define XPUF_RED_KEY "0000000000000000000000000000000000000000000000000000000000000000" Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_RED_KEY_LEN (XPUF_RED_KEY_SIZE_256) (or) (XPUF_RED_KEY_SIZE_128) XPUF_RED_KEY_LEN can be configured as one of the two provided options. This configuration should be done on the basis of the length of the red key in bits. Only 128 bit and 256 bit key are supported. By default the length of red key is configured as 256 bit.</p>
<p>#define XPUF_RED_KEY0 \ "0000000000000000000000000000000000000000000000000000000000000000" SLR 0 Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_RED_KEY1 \ "0000000000000000000000000000000000000000000000000000000000000000" SLR 1 Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_RED_KEY2 \ "0000000000000000000000000000000000000000000000000000000000000000" SLR 2 Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_RED_KEY3 \ "0000000000000000000000000000000000000000000000000000000000000000" SLR 3 Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_IV "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key.</p>
<p>#define XPUF_IV0 "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key of SLR 0.</p>
<p>#define XPUF_IV1 "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key of SLR 1.</p>
<p>#define XPUF_IV2 "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key of SLR 2.</p>
<p>#define XPUF_IV3 "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key of SLR 3.</p>
<p>#define XPUF_GENERATE_KEK_N_ID (TRUE) This macro must be configured as TRUE to generate both PUF KEK and PUF ID. In order to generate PUF ID only, it should be configured as FALSE. The default option is set as TRUE to enable encryption of Red Key.</p>
<p>#define XPUF_KEY_GENERATE_OPTION (XPUF_REGISTRATION) (or) (XPUF_REGEN_ON_DEMAND) PUF Key can be generated by PUF registration or PUF on-demand regeneration.The user can configure XPUF_KEY_GENERATE_OPTION as either XPUF_REGISTRATION or XPUF_REGEN_ON_DEMAND to select the mode of PUF operation to generate helper data. It should be configured only when XPUF_GENERATE_KEK_N_ID as TRUE.</p>
<p>#define XPUF_READ_HD_OPTION (XPUF_READ_FROM_RAM) (or) (XPUF_READ_FROM_EFUSE_CACHE) This selects the location from where the helper data must be read by the application. This option must be configured if XPUF_KEY_GENERATE_OPTION is configured as XPUF_REGEN_ON_DEMAND.</p>
<p>#define XPUF_CHASH (0x00000000) CHASH value should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.The length of CHASH should be 24 bits This can be obtained by performing PUF registration and writing the helper data on the UART.</p>
<p>#define XPUF_AUX (0x00000000) AUX value should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.The length of AUX should be 32 bits This can be obtained by performing PUF registration and writing the helper data on the UART.</p>
<p>#define XPUF_SYN_DATA_ADDRESS (0x00000000) Address of syndrome data should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.</p>
<p>#define XPUF_WRITE_HD_IN_EFUSE (FALSE) If this option is configured as TRUE then PUF helper data is written into the eFUSE.</p>
<p>#define XPUF_WRITE_BLACK_KEY_OPTION (FALSE) (or) (XPUF_EFUSE_AES_KEY_N_IV) (or) (XPUF_BBRAM_AES_KEY) (or) (XPUF_EFUSE_USER_0_KEY) (or) (XPUF_EFUSE_USER_1_KEY) This selects the location where the Black key must be programmed. Please note that If this option is configured as XPUF_EFUSE_AES_KEY_N_IV then Black key will be programmed in eFUSE AES key and Black IV is programmed in efuses. If it is configured as XPUF_BBRAM_AES_KEY, XPUF_EFUSE_USER_0_KEY or XPUF_EFUSE_USER_1_KEY then the Black key is programmed in the corresponding location but Black IV is not programmed.</p>
<p>#define XPUF_READ_SEC_CTRL_BITS (FALSE) This option should be configured as TRUE to read secure control eFUSE bits of PUF</p>
<p>#define XPUF__SEC_CTRL_BITS (FALSE) This option should be configured as TRUE to program secure control eFUSE bits of PUF</p>
<p>#define PUF_DIS (FALSE) This option should be configured as TRUE to program the PUF_DIS eFUSE bit</p>
<p>#define PUF_REGEN_DIS (FALSE) This option should be configured as TRUE to program the PUF_REGEN_DIS eFUSE bit</p>
<p>#define PUF_HD_INVLD (FALSE) This option should be configured as TRUE to program the PUF_HD_INVLD eFUSE bit</p>
<p>#define PUF_SYN_LK (FALSE) This option should be configured as TRUE to program the PUF_SYN_LK eFUSE bit</p>
<p>#define XPUF_GLBL_VAR_FLTR_OPTION (TRUE) It is recommended to always enable this option to ensure entropy. It can be configured as FALSE to disable Global Variation Filter.</p>
<p>#define XPUF_ENV_MONITOR_DISABLE (FALSE) This option should be configured as TRUE to disable the temparature and voltage checks before eFuses programming.</p>
<p>#define SLR_INDEX (XPUF_SLR_INDEX_0) (or) (XPUF_SLR_INDEX_1) (or) (XPUF_SLR_INDEX_2) (or) (XPUF_SLR_INDEX_3) This option selects the Slave Slr for provisioning. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a75c54e204c968cc9deda5f14d8f0b382"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__example_8h.html#a75c54e204c968cc9deda5f14d8f0b382">XPUF_WRITE_BLACK_KEY_OPTION</a>&#160;&#160;&#160;(FALSE)</td></tr>
<tr class="memdesc:a75c54e204c968cc9deda5f14d8f0b382"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input SlrIndex.  <a href="#a75c54e204c968cc9deda5f14d8f0b382">More...</a><br/></td></tr>
<tr class="separator:a75c54e204c968cc9deda5f14d8f0b382"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a75c54e204c968cc9deda5f14d8f0b382"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_WRITE_BLACK_KEY_OPTION&#160;&#160;&#160;(FALSE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input SlrIndex. </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
